package lgconf

import (
	"gogogo-server/engine/zlog"
	"time"
)

// LGNetworkBasicConfig 网络相关的基础配置
type LGNetworkBasicConfig struct {
	Name          string // 名字,也是网络识别的唯一id
	Addr          string
	NetworkType   string        // 网络类型 "tcp/ws"
	MsgProcType   string        // 消息处理器的类型 "json/msgpack"
	Timeout       time.Duration //连接超时时间
	MaxMsgLen     uint32
	SizeWriteChan int
}

// LGClientConfig 作为客户端时的配置
type LGClientConfig struct {
	ReconnectInterval    time.Duration // 重连间隔, 默认5s
	HeartBeatInterval    time.Duration // 时间时间, 默认30s
	LGNetworkBasicConfig `mapstructure:",squash"`
	ConnNum              int // 连接数量,可以连接多个,用于压测
}

// LGServerConfig 作为服务端时的配置
type LGServerConfig struct {
	LGNetworkBasicConfig `mapstructure:",squash"`
	MaxConnNum           int
}

// LGGlobalConfig 加载的配置
type LGGlobalConfig struct {
	Clients  []LGClientConfig
	Servers  []LGServerConfig
	LGLogCfg zlog.ZapLogNode `mapstructure:"log"`
}

var LGConfig LGGlobalConfig
